﻿using B.MES.FLH.WarehouseManagement.Application.Dtos.Area;
using B.MES.FLH.WarehouseManagement.Application.Dtos.Definition;
using B.MES.FLH.WarehouseManagement.Application.Dtos.Externallabel;
using B.MES.FLH.WarehouseManagement.Application.Dtos.IOWarehouserecord;
using B.MES.FLH.WarehouseManagement.Application.Dtos.Location;
using B.MES.FLH.WarehouseManagement.Application.Dtos.Made_UpArticles;
using Standard;

namespace B.MES.FLH.WarehouseManagement.Application
{
    public interface IService
    {
        //添加仓库定义
        ApiResult<int> CreateWAREHOUSEDEFINITIONMODEL(CreateWarehouseDefinitionModelInput input);
        //更新仓库定义
        ApiResult<int> UpdateWAREHOUSEDEFINITIONMODEL(UpdateWarehouseDefinitionModelInput input);
        //软删除仓库定义
        ApiResult<int> DeleteWAREHOUSEDEFINITIONMODEL(string id);
        //获取仓库定义列表
        ApiPaging<WarehouseDefinitionModelOutput> GetWAREHOUSEDEFINITIONMODEL(PageWareHouseDefinition page);
        //获取仓库定义详情
        ApiResult<WarehouseDefinitionDescOutput> GetWAREHOUSEDEFINITIONDESC(string id);
        //获取仓库定义Id和名称
        ApiResult<List<GetWarehouseDefinitionIdAndName>> GetWarehouseDefinitionIdAndName();


        
        //添加货架/库区
        ApiResult<int> CreateAREAMODEL(CreateAreaModelInput input);
        //更新货架/库区
        ApiResult<int> UpdateAREAMODEL(UpdateAreaModelInput input);
        //软删除货架/库区
        ApiResult<int> DeleteAREAMODEL(string id);
        //获取货架/库区列表
        ApiPaging<AreaModelOutput> GetAREAMODEL(PageArea page);
        //获取货架/库区详情
        ApiResult<AreaDescOutput> GetAREADESC(string id);
        //获取货架/库区的Id和名称
        ApiResult<List<GetWarehouseAreaIdAndName>> GetWarehouseAreaIdAndName();


        //添加库位
        ApiResult<int> CreateLOCATIONMODEL(CreateLocationModelInput input);
        //更新库位
        ApiResult<int> UpdateLOCATIONMODEL(UpdateLocationModelInput input);
        //软删除库位
        ApiResult<int> DeleteLOCATIONMODEL(string id);
        //获取库位列表
        ApiPaging<LocationModelOutput> GetLOCATIONMODEL(PageLocation page);
        //获取库位详情
        ApiResult<LocationDescOutput> GetLOCATIONDESC(string id);



        //添加外部标签
        ApiResult<int> CreateEXTERNALLABELMODEL(CreateEXTERNALLABELModelInput input);
        //更新外部标签
        ApiResult<int> UpdateEXTERNALLABELMODEL(UpdateEXTERNALLABELModelInput input);
        //软删除外部标签
        ApiResult<int> DeleteEXTERNALLABELMODEL(string id);
        //获取外部标签列表
        ApiPaging<EXTERNALLABELModelOutput> GetEXTERNALLABELMODEL(PageEXTERNALLABEL page);
        //获取外部标签详情
        ApiResult<EXTERNALLABELDescOutput> GetEXTERNALLABELDESC(string id);


        //添加出入库记录
        ApiResult<int> CreateIOWAREHOUSERECORDMODEL(CreateIOWAREHOUSERECORDModelInput input);
        //软删除出入库记录
        ApiResult<int> DeleteIOWAREHOUSERECORDMODEL(string id);
        //获取出入库记录列表
        ApiPaging<IOWAREHOUSERECORDModelOutput> GetIOWAREHOUSERECORDMODEL(PageIOWAREHOUSERECORD page);

        /// <summary>
        /// 编码生成器
        /// </summary>
        /// <param name="codeType"></param>
        /// <returns></returns>
        Task<ApiResult<string>> GetCode(string codeType);

        //添加出入库记录
        ApiResult<int> CreateMade_UpArticlesModel(CreateMade_UpArticlesModelInput input);
        //软删除出入库记录
        ApiResult<int> DeleteMade_UpArticlesModel(string id);
        //获取出入库记录列表
        ApiPaging<Made_UpArticlesModelOutput> GetMade_UpArticlesModel(PageMade_UpArticlesModel page);

    }
}
